package chapter09;

import java.util.HashMap;
import java.util.Map;

import static java.util.Objects.hash;

/**
 * HashMap 并发死链,需要在java7测试环境下运行
 */
public class HashMapDeadLinked {
    public static void main(String[] args) {

        System.out.println("长度为16时，桶下标为1的key");
        for(int i=0;i<64;i++){
            if(hash(i)%16==1){
                System.out.println(i);
            }
        }
        System.out.println("长度为32时，桶下标为1的key");
        for(int i=0;i<64;i++){
            if(hash(i)%32==1){
                System.out.println(i);
            }
        }

        final HashMap<Integer,Integer> map=new HashMap<>();
        // 放入12个元素
        for(int i=3;i<=11;i++){
            map.put(i,null);
        }
        map.put(2,null);
        map.put(18,null);
        map.put(34,null);

        System.out.println("扩容前大小【main】："+map.size());
        new Thread(){
            @Override
            public void run() {
                // 放入第十三个元素
                map.put(50,null);
                System.out.println("扩容后大小【thead-0】:"+map.size());
            }
        }.start();
        new Thread(){
            @Override
            public void run() {
                // 放入第十三个元素
                map.put(50,null);
                System.out.println("扩容后大小【thead-1】:"+map.size());
            }
        }.start();
    }
}
